====== ISCSI ======

<note important>Cette configuration a été effectuée sous un serveur local disposant d'ubuntu 12.04.1 LTS, il se peut qu'elle diffère pour des versions antérieures, ces versions ne sont par ailleurs plus conseillées, ubuntu 12.04.1 proposant un support de plusieurs années. LOL</note>

Un SAN, qu'est ce que c'est ? :-P

Un SAN, tout comme un NAS usant des protocoles NFS ou SAMBA, vous permet de partager de l'espace disque via une image disque simulant un disque dur ou d'un disque complet, via le protocole ISCSI.
La nette différence résulte dans le fait que c'est le système client qui prend en charge le formatage et le système de fichiers de ce dernier, sans compter que les performances seront généralement meilleures que sous les deux autres protocoles, notamment sur de multiples petits fichiers. ;-)

Selon [[http://blog.gaetan-grigis.eu/systeme/administration/mise-en-place-discsi-pour-le-partage-de-donnees/|cet article]], l'accès en écriture serait amélioré de 20% par rapport en NFS, et de 400% (théorique, dépend de votre configuration réseau) en lecture. ^_^

Autres points importants, cette technique vous permet de soulager votre serveur en terme de ressources demandées (au détriment du poste client toutefois), mais surtout de mapper en dur cet espace disque comme s'il faisait partie intégrante de la machine client. 
Ainsi certains logiciels comme le client Steam sous Windows, développé pour empêcher l'utilisateur de faire fonctionner ce client logiciel de jeux, sous un disque réseau (m(), n'y verra plus que du feu. LOL
Cette technique est aussi valable pour d'autres logiciels n'autorisant leur utilisation que sur des disques locaux.  ;-)

===== Installation sur le serveur =====

L'installation est très simple, et se résume en cette commande :

<code>sudo apt-get install iscsitarget iscsitarget-source iscsitarget-dkms</code>

===== Configuration =====

La configuration est également assez simple une fois le concept saisi, deux choix s'offrent à vous, dédier un disque complet à l'utilisation de ISCSI pour un partage réseau en dur, ou bien dédier un espace choisit via la création d'un fichier image d'un disque dur.


===== Configuration : deuxième partie =====

==== Cas d'un disque émulé ====

Voici la commande nécessaire à la création d'un disque virtuel de 40Go, vous devrez modifier fs.iscsi.disk par le chemin et le nom du fichier que vous aurez choisit, et la valeur 40000 correspondra à la taille du disque choisit.

<code>dd if=/dev/zero of=fs.iscsi.disk bs=1M count=40000</code>

Il faudra editer le fichier de configuration /etc/iet/ietd.conf :
<code>sudo nano /etc/iet/ietd.conf</code>
Et ajouter ça dedans:
<code>Target nom-libre:fs.iscsi.disk
Lun 0 Path=/chemin/du/disque/virtuel/fs.iscsi.disk,Type=fileio</code>

==== Cas pour un disque dur ou une partition en dur ====
Il faudra également éditer le fichier de configuration /etc/iet/ietd.conf :
<code>sudo nano /etc/iet/ietd.conf</code>
Et ajouter ça dedans:
<code>Target nom-libre:sdb2
Lun 0 Path=/dev/sdb2,Type=fileio</code>

==== Configuration finale ====


Enfin, éditez un deuxième fichier de configuration /etc/default/iscsitarget :

<code>sudo nano /etc/default/iscsitarget</code>

Et remplacez la valeur "false" par "true" :

<code> ISCSITARGET_ENABLE=false </code>

deviendra

<code> ISCSITARGET_ENABLE=true </code>

Il ne reste plus qu'à redémarrer le service pour prendre en compte les modifications :

<code>sudo service iscsitarget restart</code>

Devra vous indiquer :

<code>
 * Removing iSCSI enterprise target devices:              [ OK ]
 * Starting iSCSI enterprise target service                    [ OK ]
                                                                                       [ OK ]
</code>

Enfin, vous pouvez vérifier que votre disque a bien été pris en compte via cette commande :

<code>cat /proc/net/iet/volume</code>
<note important>Si votre serveur est protégé par un pare-feu, ouvrez le port 3260 vers votre réseau local, par exemple :\\
sudo ufw allow to any port 3260 from 192.168.1.0/24</note>
===== Poste client GNU/Linux =====
==== Installation manuelle ====
Sur le poste client, installez le paquet "open-iscsi"

<code>sudo apt-get install open-iscsi</code>

Puis lancez une détection (192.168.0.1 étant à remplacer par l'ip du serveur):

<code>sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.0.1</code>

Dans mon exemple, le disque virtuel étant dédié à Steam, cela donne le résultat :

<code>192.168.0.1:3260,1 steam:fs.iscsi.steam</code>

Ensuite pour lier le disque virtuel au couple machine/client (en adaptant selon vos valeurs) :

<code>sudo iscsiadm --mode node --targetname steam:fs.iscsi.steam \ --portal 192.168.0.1 --login</code>

Si l'opération s'est bien déroulée s'affiche alors quelque chose comme : 

<code>Logging in to [iface: default, target: steam:fs.iscsi.steam, portal: 192.168.0.1,3260] (multiple)</code>

Remarquez le jeu de mot... (Steam/Valve/Portal ! m( )

Voilà, votre disque virtuel distant SCSI est monté sur votre machine cliente Linux !

==== Scripte automatique pour PC diskless (PXE boot en Live) ====
Lors d'un démarrage en mode [[http://doc.ubuntu-fr.org/netboot_live|Netboot Live]], votre PC client est totalement dénudé.
Afin de réaliser l'installation de 'open-iscsi', d'interroger le serveur et de pouvoir choisir le disque à connecter, deux petits scriptes sont téléchargeables directement.

En version [[http://home.maisondouf.fr/download/Linux-Tools/iscsi_client.sh|purement terminal]] et en version [[http://home.maisondouf.fr/download/Linux-Tools/iscsi_client_z.sh|Zenity]].

Il vous suffit donc à partir de votre PC client d'ouvrir le navigateur, de venir sur cette documentation pour les télécharger.

La syntaxe de lancement est très simpliste : 
    - sudo <SCRIPTE> <IP_DU_SERVEUR> pour connecter un disque
    - sudo <SCRIPTE> -u pour déconnecter un disque

==== Montage automatique au démarrage ====
Si vous voulez que les disques distants soient automatiquement montés au démarrage de votre système, il faut éditer le fichier :

<code>sudo nano /etc/iscsi/iscsid.conf</code>

Et dé-commenter (enlever le "#") 

<code>node.startup = automatic</code>

===== Poste client Windows =====

Concernant les machines sous Windows, ça n'a pas lieu d'être traité ici, même si personnellement, sous Windows 8 Entreprise, je n'ai eu aucun souci pour connecter mon disque via ISCSI et le formater en NTFS en quelques clics; [[http://technet.microsoft.com/fr-fr/library/ee338480%28v=ws.10%29.aspx|rendez vous sur la page ISCSI du support technique de Microsoft]] pour obtenir des informations à ce sujet.

À noter qu'il y a eu des régressions entre Windows 7 et Windows 8, par exemple sous Windows 7 pro, on pouvait sans problème configurer le partage de fichiers via NFS, ce qui est absent de Windows 8 pro, et présent uniquement dans la version Entreprise.